const bodyParser = require('body-parser')
let {
  userList,
  list
} = require('./mock')
module.exports = app => {
  app.use(bodyParser.json())
  // 登录接口
  app.post('/api/login', (req, res) => {
    // 1. 获取用户名和密码
    const {
      username,
      password
    } = req.body;
    // 2. 检查
    const user = userList.find(v => {
      return (v.tel === username && v.password === password) ||
        (v.email === username && v.password === password)
    })

    // 3. 判断
    user ?
      res.send({
        code: 200,
        message: `登录成功, 欢迎${user.nickname}`,
        data: {
          tel: user.tel,
          email: user.email,
          nickname: user.nickname,
          avator: user.avator,
          /* 用户角色 */ 
          role: user.role,
          /* 假的， 明天写真的 */
          token: 'xxxxxxxxxxxxxxx'
        }
      }) :
      res.send({
        code: 400,
        message: `账户密码错误， 请重新登录`,
      })
  })

  // 列表查询请求
  app.get('/api/list', (req, res) => {
    const { value, type, min, max, sort } = req.query;
    // 1. 复制数据
    let result = [...list];
    // 2. 是否模糊搜索
    if(value) {
      result = result.filter(v => {
        return v.title.includes(value)
          || v.tel.includes(value)
          || v.id.includes(value)
          || v.address.includes(value)
          || v.price.toString().includes(value)
          || v.count.toString().includes(value)
          || v.type.includes(value)
      })
    } 
    // 3. 是否类型搜索
    if(type && type !== '全部') {
      result = result.filter(v => {
        return v.type === type;
      })
    }

    // 4. 是否价格区间查找
    if(min && max) {
      result = result.filter(v => {
        return v.price >= min  && v.price <= max
      })
    }

    // 5. 是否排序
    if(sort && sort !== '默认排序') {
      result.sort((a, b) => {
        return sort === '升序' ? a.price - b.price : b.price - a.price
      })
    }

    res.send({
      code: 200,
      data: result,
      message: 'ok'
    })
   
  })

  // 删除接口 && 支持多项删除
  app.delete('/api/list', (req, res) => {
    // 1. 获取删除id
    const { id } = req.query
    // id = "123"
    // id = "123, 456, 789"

    // 2. 删除数据
    list = list.filter(item => !id.includes(item.id));

    // 3. 
    res.send({
      code: 200,
      message: '删除成功！！'
    })
  })

  // 详情接口
  app.get('/api/detail', (req, res) => {
    // 1. 获取 id
    const { id } = req.query;
    // 2. 根据 id 查找数据
    const item = list.find(v => v.id === id );
    if(item) {
      res.send({
        code: 200,
        data: item
      })
    } else {
      res.send({
        code: 400,
        message: '数据不存在或者已删除'
      })
    }
   
  })

  // 修改接口
  app.post('/api/list', (req, res) => {
    const { id } = req.body;
    const item = list.find(v => v.id === id);
    Object.assign(item, req.body);
    res.send({
      
      code: 200,
      message: 'ok'
    })
  })
}

// 404
// 分析： 资源找不到
// 1. src/setupProxy.js  目录， 名字是否正确
// 2. 找到请求方式 路径 是否正确
// 3. 只要setupProxy.js 发生修改， 必须重启生效

// id = "123, 789, 666"

// [{
//   id: "123"  //  X
// }, {
//   id: "456"  //  ok
// }, {
//   id: "789"  //  X
// }, {
//   id: "444"  // ok
// }, {
//   id: "666"  // X
// }]

// list = list.filter(item => !"123, 789, 666".includes(item.id));